home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-05-14 | 16.2 KB | 399 lines |
- import ComponentApp;
-
- public class BBSComp extends ComponentApp
- {
- DAssetManager cam;
- DDrawPicture cdp;
- int idScript;
- String Subdirectory;
- String Title;
- String UnixWindows;
- String PerlPath;
- boolean AdminTool;
- String codeBase;
-
-
- static int onlyYou = 0;
- int onlyYouInvalid = 0;
- static final int MAXASSET=50;
- boolean published = false;
-
- int assetControl[];
- int assetCount = 0;
- int tAssetCount = 0;
-
- public String onInstall(DAssetManager asm, String codeBaseOut)
- {
-
- cam = asm;
- codeBase = codeBaseOut;
- return "BBS";
-
- }
- public void onInspect(CStringArray Names,CStringArray Types)
- {
- if (onlyYouInvalid == 1){ return;}
-
- Names.Set("Subdirectory");
- Types.Set(typeString);
- Names.Set("Page Title");
- Types.Set(typeString);
- Names.Set("Publish to");
- Types.Set("Set(Windows|Unix|Mac)");
- // Types.Set("Set(Windows|Unix)");
- Names.Set("Perl Path for Unix");
- Types.Set(typeString);
- // Names.Set("Admin Tool for Unix");
- // Types.Set("Set(No|Yes)");
-
-
-
- }
-
-
- public String PropertyListener(String Event,String Value,int Get, int propIndex, IDInspector insp)
- {
- if (Get == 1)
- {
- if (Event.compareTo("Subdirectory") == 0)
- {
- return Subdirectory;
- }
- else if (Event.compareTo("Page Title") == 0)
- // if (Event.compareTo("Page Title") == 0)
- {
- return Title;
- }
- else if (Event.compareTo("Publish to") == 0)
- {
- if(UnixWindows.compareTo("Windows") ==0)
- return "0"; //1
- else if (UnixWindows.compareTo("Unix") == 0)
- return "1";//0
- else if (UnixWindows.compareTo("Mac") == 0)
- return "2"; //Mac
- }
- else if (Event.compareTo("Perl Path for Unix") == 0)
- {
- return PerlPath;
- }
- /* else if (Event.compareTo("Admin Tool for Unix") == 0)
- {
- if(AdminTool==false)
- return "1";
- else
- return "0";
-
- }
- */
- }
- else
- {
- if (Event.compareTo("Subdirectory") == 0)
- {
- Subdirectory = Value;
-
- }
- else if (Event.compareTo("Page Title") == 0)
- // if (Event.compareTo("Page Title") == 0)
- {
- Title = Value;
- }
- else if (Event.compareTo("Publish to") == 0)
- {
- // if(Value.compareTo("0")==0)
- // UnixWindows=true;
- //to window
- // else
- // UnixWindows=false;
- //to unix
-
- if (Value.compareTo("0") == 0)
- UnixWindows = "Windows";
- else if (Value.compareTo("1") == 0)
- UnixWindows = "Unix";
- else
- UnixWindows = "Mac";
- }
- else if (Event.compareTo("Perl Path for Unix") == 0)
- {
- PerlPath = Value;
- }
- /* else if (Event.compareTo("Admin Tool for Unix") == 0)
- {
- if(Value.compareTo("0")==0)
- AdminTool=true;
- //to no
- else
- AdminTool=false;
- //to yes
- }
- */
- cdp.setHTMLBefore("<a href=\"#\" target=_self onclick=\'launchBBS(\""+Subdirectory+"\",\""+Title+"\")\'>");
- cdp.setHTMLAfter("</a>");
- //this.generateFile();
-
- }
- return "";
- }
-
- public void onCopy()
- {
-
- Subdirectory = new String(Subdirectory);
- Title = new String(Title);
- PerlPath = new String(PerlPath);
- codeBase = new String(codeBase);
-
- //
- // DS 1/27/97, need to allocate instance array and copy
- // script asset
- //
- cam.CopyAsset(idScript);
-
- int newAssetControl[];
- newAssetControl = new int [MAXASSET];
- for(tAssetCount = 0; tAssetCount < assetCount; tAssetCount++){
- cam.CopyAsset(assetControl[tAssetCount]);
- newAssetControl[tAssetCount] = assetControl[tAssetCount];
- }
- assetControl = newAssetControl;
- // DS 1/27/97
- }
-
- // DS fix 1/27/97: functions for error checking
- boolean CheckTwoInstancesError() {
- if (onlyYou == 1) {
- DMessageBox message=new DMessageBox();
- message.Warnning("Only one BBS Component is allowed per NOD file. Please delete the extra BBS Components.");
- onlyYouInvalid = 1;
- return true;
- }
- return false;
- }
-
- void OnDropOK() {
- cam.InsertScript("bbs_script_layout", this.getJavaScript());
- onlyYou = 1;
- }
- // DS fix 1/27/97:
-
- public void onDrop(IDLayout layout, IDRect r, int fDrop)
- {
- if (fDrop == ActivateState.Drop)
- {
- //
- // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
- //
- if (CheckTwoInstancesError()){
- return;
- }
- // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
-
- assetControl = new int [MAXASSET];
- for (int tCount = 0; tCount < MAXASSET; tCount++){
- assetControl[tCount] = 0;
- }
-
- String FusionPath = codeBase;
-
- Subdirectory="bbs";
- Title="NetObjects BBS";
- UnixWindows="Windows";
- AdminTool=true;
-
- PerlPath="/usr/local/bin/perl";
- cdp = new DDrawPicture();
-
- DImage imageSizer=new DImage();
- imageSizer.setImageFile(FusionPath+"bbs\\image\\BBSComp.gif");
- IDSize currentImageSize=imageSizer.getSize();
-
- cdp.setImageFile(FusionPath+"bbs\\image\\BBSComp.gif");
- cdp.SetPositionRect(r.getLeft(), r.getTop(), r.getLeft()+currentImageSize.getWidth(), r.getTop()+currentImageSize.getHeight());
- cdp.setStretch(PictureStretchMode.DRAW_NATURAL);
-
- idScript = cam.AddAsset("bbs_script_layout", IAssetType.JavaScript,"");
- layout.AddObject(cdp);
- // DS fix 1/27/97: Set this instance as valid instance
- OnDropOK();
- // DS fix 1/27/97: Set this instance as valid instance
-
- }
- else if(fDrop == ActivateState.Paste){
- // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
- if ( CheckTwoInstancesError() ){
- return;
- }
- // DS fix 1/27/97: Set this instance as valid instance
- OnDropOK();
- // DS fix 1/27/97: Set this instance as valid instance
- }
- }
-
- protected void finalize(){
- cam.RemoveAsset(idScript);
- if (published == true){
- for(assetCount = 0; assetCount < MAXASSET; assetCount++){
- cam.RemoveAsset(assetControl[assetCount]);
- }
- }
- //
- // DS fix 1/27/97: if this is a valid instance, reset flag to zero so
- // sebsequent drop will not fail
- //
- if ( onlyYouInvalid == 0)
- onlyYou = 0;
- // DS fix 1/27/97: if this is a valid instance, reset flag to zero so
- }
-
- public void onPublish(DAssetManager asm, int context)
- {
-
-
- cdp.setHTMLBefore("<a href=\"#\" target=_self onclick=\'launchBBS(\""+Subdirectory+"\",\""+Title+"\")\'>");
- cdp.setHTMLAfter("</a>");
- String sepChar;
- String FusionPath = codeBase;
- DFile temp = new DFile();
- sepChar = temp.GetPathChar();
- // need to add config, and submit-bbs-message.cgi
- // figure out the how to get the system to copy the bbs file from?
- //../../SmartObjects/bbs/bbs-control.html?
-
- if (published == true){
- for(assetCount = 0; assetCount < MAXASSET; assetCount++){
- cam.RemoveAsset(assetControl[assetCount]);
- }
-
- }
- assetCount = 0;
-
- published = true;
-
-
- assetControl[assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "bbs-control.html", IAssetType.HTML, Subdirectory);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "bbs-message.html", IAssetType.HTML, Subdirectory);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "blank.html", IAssetType.HTML, Subdirectory);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "index.html", IAssetType.HTML, Subdirectory);
-
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "dot24_clear.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "background.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "clear.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "expand.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "listby.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "newmessage.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "next.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "previous.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "reload.gif", IAssetType.Image, Subdirectory + sepChar + "image");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "reply.gif", IAssetType.Image, Subdirectory + sepChar + "image");
-
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "error-char.html",IAssetType.HTML,Subdirectory + sepChar + "html");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "error.html",IAssetType.HTML, Subdirectory + sepChar + "html");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "success.html",IAssetType.HTML, Subdirectory + sepChar + "html");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "url-only-char.html",IAssetType.HTML,Subdirectory + sepChar + "html");
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "urlreply.html",IAssetType.HTML,Subdirectory + sepChar + "html");
-
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "message" + sepChar + "bbs-data.original",IAssetType.HTML,Subdirectory + sepChar + "message");
- cam.SetPublishAssetMode(assetControl[assetCount], 0704);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "message" + sepChar + "zero.counter",IAssetType.HTML,Subdirectory + sepChar + "message");
- cam.SetPublishAssetMode(assetControl[assetCount], 0704);
- assetControl[++assetCount] = cam.AddAsset(Subdirectory+"" + sepChar + "message" + sepChar + "",IAssetType.SubDir, "");
- cam.SetPublishAssetMode(assetControl[assetCount], 0707);
-
-
-
-
-
-
-
-
- if(UnixWindows.compareTo("Windows") == 0){
- //Window version
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "Buf.dll", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
-
-
-
- }
- else if(UnixWindows.compareTo("Mac") == 0){
- //Mac version
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-mac" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-mac" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
-
-
-
-
- }
- else if (UnixWindows.compareTo("Unix") == 0) {
- //Unix Version
- DFile file = new DFile();
- DFile fileFrom = new DFile();
-
- fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "config",FileOpenMode.modeRead);
- file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "config",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
- file.WriteString("#!"+PerlPath+"\n", -1);
- file.WriteString(fileFrom.ReadString(10000),-1);
- file.Close();
- fileFrom.Close();
-
- fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "submit-bbs-form.cgi",FileOpenMode.modeRead);
- file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "submit-bbs-form.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
- file.WriteString("#!"+PerlPath+"\n\n",-1);
- file.WriteString(fileFrom.ReadString(20000),-1);
- file.Close();
- fileFrom.Close();
-
- fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "bbs-submit.cgi",FileOpenMode.modeRead);
- file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "bbs-submit.cgi", FileOpenMode.modeWrite|FileOpenMode.modeCreate);
- file.WriteString("#!"+PerlPath+"\n", -1);
- file.WriteString(fileFrom.ReadString(20000),-1);
- file.Close();
- fileFrom.Close();
-
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "config", IAssetType.CGI, Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI, Subdirectory + sepChar + "cgi-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
-
- if(AdminTool == false){
- //yes give me tool
- fileFrom.Open(FusionPath+"bbs" + sepChar + "admin-bin-Unix" + sepChar + "deleteMessage.cgi",FileOpenMode.modeRead);
- file.Open(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "deleteMessage.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
- file.WriteString("#!"+PerlPath+"\n", -1);
- file.WriteString(fileFrom.ReadString(10000),-1);
- file.Close();
- fileFrom.Close();
-
- fileFrom.Open(FusionPath+"bbs" + sepChar + "admin-bin-Unix" + sepChar + "resetBBS.cgi",FileOpenMode.modeRead);
- file.Open(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "resetBBS.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
- file.WriteString("#!"+PerlPath+"\n\n",-1);
- file.WriteString(fileFrom.ReadString(20000),-1);
- file.Close();
- fileFrom.Close();
-
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "deleteMessage.cgi", IAssetType.CGI,Subdirectory + sepChar + "admin-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
- assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "resetBBS.cgi", IAssetType.CGI, Subdirectory + sepChar + "admin-bin");
- cam.SetPublishAssetMode(assetControl[assetCount], 0705);
-
- }
-
- }
-
-
- }
-
- private String getJavaScript()
- {
- return "function newCookie(name, value){\n document.cookie = name + \"=\" + value + \"; path=/; domain=\" + location.hostname + \";\"; \n}\nfunction launchBBS(URL,Title){\n var direct = location.pathname; \n if((location.pathname.lastIndexOf(\"/\") + 1) == location.pathname.length){ \n direct = location.pathname; \n } \n else{ \n direct = location.pathname.substring(0,location.pathname.lastIndexOf(\"/\")) + \"/\"; \n }\n if (direct.substring(direct.length - 5, direct.length - 1) == \"html\"){\n direct = direct.substring(0, direct.length - 6) + \"/\";\n } \n" + "if (location.port.length == 0){\n NURL= location.protocol+\"//\" + location.hostname + direct + URL + \"/\";\n }\n else {\n NURL= location.protocol+\"//\" + location.hostname + \":\" + location.port + direct + URL + \"/\";\n } \n var WinName = window.open(NURL+\'index.html\',\'netobjects_bbs\',\'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,copyhistory=0,width=800,height=600\');\n if (navigator.appVersion.indexOf(\"(X11\") != -1 ||\n navigator.appVersion.indexOf(\"(Mac\") != -1)\n newWin = window.open(NURL+\'index.html\',\'netobjects_bbs\');\nnewCookie(\"URL\",NURL);\nnewCookie(\"Title\",Title);\nnewCookie(\"CgiURL\",NURL+\"cgi-bin\");\nnewCookie(\"GifURL\",NURL+\"image/webforum.gif\");\n} \n";
- }
- }